
-- Consultar usuario por correo electrónico

SELECT 
    r.nombre AS RolAsignado,
    l.USERNAME AS CorreoElectronico,
    l.IS_ACTIVE AS EstadoUsuario,
    p.NUMERO_DOCUMENTO AS NumeroDocumento,
    p.PRIMER_NOMBRE AS PrimerNombre,
    p.SEGUNDO_NOMBRE AS SegundoNombre,
    p.PRIMER_APELLIDO AS PrimerApellido,
    p.SEGUNDO_APELLIDO AS SegundoApellido,
    l.ID_INSTITUCION AS InstitucionID,
    l.ID_SEDE AS SedeID,
    inst.NIT_INSTITUCION AS NitInstitucion,
    inst.NOMBRE_INSTITUCION AS NombreInstitucion,
    s.NOMBRE_SEDE AS NombreSede
    
FROM 
    SED_EDTH.dbo.[LOGIN] l
-- Hacemos LEFT JOIN con PERSONA por si el login aún no tiene una persona asociada
LEFT JOIN 
    SED_EDTH.dbo.PERSONA p ON l.ID_PERSONA = p.ID_PERSONA
-- Hacemos LEFT JOIN para traer los roles, validando que la asignación esté activa (estado = 1)
LEFT JOIN 
    SED_EDTH.dbo.LOGIN_ROLES lr ON l.ID_LOGIN = lr.login_id AND lr.estado = 1
LEFT JOIN 
    SED_EDTH.dbo.ROLES r ON lr.roles_id = r.id AND r.estado = 1
-- Joins para traer la información de la Institución y la Sede
LEFT JOIN 
    SED_EDTH.dbo.INSTITUCION inst ON l.ID_INSTITUCION = inst.ID_INSTITUCION
LEFT JOIN 
    SED_EDTH.dbo.SEDE s ON l.ID_SEDE = s.ID_SEDE
WHERE 
    l.USERNAME = 'mpastor@educacionbogota.gov.co';

-- Actualizar perfil de usuario

UPDATE lr
SET lr.roles_id = r_nuevo.id
FROM SED_EDTH.dbo.LOGIN_ROLES lr
INNER JOIN SED_EDTH.dbo.[LOGIN] l ON lr.login_id = l.ID_LOGIN
CROSS JOIN SED_EDTH.dbo.ROLES r_nuevo
WHERE l.USERNAME = 'mpastor@educacionbogota.gov.co'
  AND r_nuevo.nombre = 'Usuario Institución' 
  AND lr.estado = 1; 

-- ROLES
-- 'Administrador General'
-- 'Usuario Institución'
-- 'Usuario Sede'

-- Consultar permisos del usuario:

SELECT 
    l.USERNAME AS CorreoElectronico,
    r.nombre AS Rol,
    m.nombre AS ModuloAccesible,
    a.nombre AS AccionPermitida
FROM 
    SED_EDTH.dbo.[LOGIN] l
INNER JOIN 
    SED_EDTH.dbo.LOGIN_ROLES lr ON l.ID_LOGIN = lr.login_id AND lr.estado = 1
INNER JOIN 
    SED_EDTH.dbo.ROLES r ON lr.roles_id = r.id AND r.estado = 1
INNER JOIN 
    SED_EDTH.dbo.PERMISOS perm ON r.id = perm.roles_id AND perm.estado = 1
INNER JOIN 
    SED_EDTH.dbo.MODULOS m ON perm.modulos_id = m.id AND m.estado = 1
INNER JOIN 
    SED_EDTH.dbo.ACCIONES a ON perm.acciones_id = a.id AND a.estado = 1
WHERE 
    l.USERNAME = 'mpastor@educacionbogota.gov.co'
ORDER BY 
    r.nombre, m.nombre, a.nombre;